In a computing environment, many tasks or processes are performed in the background or during idle time. For example, tasks or processes are performed invisibly or when the user is not actively involved with an interactive application for some period of time. Many of the tasks or processes are non-critical but time, memory and/or processor-intensive activities (e.g., backup programs, scheduled jobs, cleaning files, Anti-Virus scan, screen saver program, web page serving, email transfer processes, file synchronization, among others).
Often, such background or idle tasks or processes cause the working sets of executable and data pages associated with the interactive applications to become “paged-out” of the local memory (i.e., removed from local memory, such as RAM). For example, the working set may be paged out to free up memory for the working set associated with the background or idle tasks or processes. However, when the user returns to using the interactive application, a significant amount of sluggishness is experienced due to the subsequent “paging in” of the working set of the interactive application that was previously paged out. The manner in which memory pages are managed in a Windows environment are described in an article entitled “The NT Insider, Vol. 6, Issue 1, January-February 1999, published in “Windows NJ Virtual Memory (Part II)”.
Therefore, there exists a need for a method and apparatus of mitigating the adverse performance impact of background or idle time processing on interactive applications.